The present invention relates generally to data processing systems and, more particularly, to a uniform mechanism for transferring data within a data processing system.
In conventional computer systems, data transfer is application specific. In other words, a computer program is responsible for handling the data transfer that is required by an application of data transfer functionality (xe2x80x9capplicationxe2x80x9d). Two examples of such applications of data transfer functionality are drag-and-drop and cut-and-paste. Drag-and-drop refers to when a computer user selects data contained within a data source and moves the mouse to a data sink while keeping the mouse button depressed. The data source and the data sink are computer programs within the computer system which contain or accept data. An example of a data source or data sink is a file editor or a word processing document. When the indicator on the computer display, which reflects mouse movement (xe2x80x9cmouse pointerxe2x80x9d), appears to be pointing to the data sink, the user releases the depressed mouse button and the selected data appears to be inserted into the dam sink. Cut-and-paste refers to when a computer user selects data from within a data source and performs a cut operation (typically invoked through a pull-down menu). The computer user then selects a position in the data sink and performs a paste operation (typically invoked through a pull-down menu). The result of a cut-and-paste application is that data is extracted from the data source and is inserted into the data sink. In order to understand how a data sink and a data source handle the drag-and-drop and cut-and-paste applications, drag-and-drop and cut-and-paste are examined in more detail below.
FIG. 1 depicts a conventional computer system for performing a drag-and-drop application. The memory 102 of the computer system contains a data source 104, which contains data 110; a global memory 108; a window manager 112 and a data sink 106. The global memory 108 is an area of memory that is accessible to all computer programs in a state of operation. Global memory may be contrasted against local memory wherein local memory is memory local to the computer program (i.e., within the address space of the computer program). The window manager 112 is a computer program responsible for performing all computer display-related operations. FIG. 2 depicts a flowchart of the steps performed by a conventional computer system for performing a drag-and-drop application. When a drag-and-drop application is performed, the computer user first selects the data 110 within the data source 104 by typically using a mouse or other pointing device (step 202). Selecting data refers to highlighting data 110 within the data source 104. The computer user then drags the selected data 110 to the data sink 106 (step 204). Dragging refers to the computer user (hereafter xe2x80x9cuserxe2x80x9d) depressing the mouse button, while the mouse pointer is positioned on the selected data 110, and moving the mouse while keeping the mouse button depressed. After the user drags the data 110 to the data sink 106, the data source 104 converts the data 110 into a format acceptable to the global memory 108 and passes the data 110 to the window manager 112 (step 206). When the data 110 is passed to the window manager 112, the window manager 112 stores the data 110 into the global memory 108. After storing the data 110 into the global memory 108, the window manager 112 transfers the data 110 from the global memory 108 to the data sink 106 (step 208). Upon receiving the data 110, the data sink 106 converts the data 110 into a format acceptable to the data sink 106 (step 210).
The cut and paste application is similar to the drag and drop application in that a data sink and a data source performing the cut and paste application also form a connection and transfer data. FIG. 3 depicts a conventional computer system for performing the cut-and-paste application. The memory 102 of the computer system contains a data source 104, which contains data 110; a clipboard 302; and a data sink 106. The clipboard 302 is responsible for maintaining an area of global memory used for temporary storage. During a cut-and-paste application, the user selects data 110 from the data source 104, invokes a cut operation (typically by using a pull-down menu), inserts the cursor into the data sink 106 and invokes the paste operation (typically by using a pull-down menu). Both the cut and the paste operations are provided by the clipboard 302 and are well known in the computer industry. FIG. 4 depicts a flowchart of the steps performed by a conventional computer system for performing the cut-and-paste application. First, the user selects data 110 from the data source 104 and performs a cut operation (step 402). The data 110 is then converted into a format acceptable to the clipboard 302 (step 404). After the data 110 has been converted, the data 10 is copied to the clipboard 308, wherein the data 110 then resides within global memory (step 406). Then, the user selects a location within the data sink 106 and invokes the paste operation (step 408). The data sink 106 transfers the data 110 from the clipboard 302 to the location in the data sink 106 selected by the user (step 410).
As indicated above, in both the cut-and-paste and the drag-and-drop applications, the data source and the data sink form a logical connection through either the clipboard 302 or the window manager 112. Then, after the connection is established, the data 110 is transferred. This two-step process requires the developers of computer programs which perform applications of data transfer functionality to create, for each application, both a connection component to establish a connection and a data transfer component to perform the data transfer. Thus, the developers of computer programs which support applications of data transfer functionality must implement a data transfer component for every application supported.
In accordance with a first aspect of the present invention, a method is executed in a computer system. In accordance with this method of the first aspect of the present invention, the computer has a connection mechanism, a uniform data transfer mechanism and a plurality of computer programs. In order to perform data transfer between two computer programs, this method establishes a connection between the computer programs transferring data and invokes the uniform data transfer mechanism to perform the data transfer.
In accordance with a second aspect of the present invention, a communication mechanism is provided that contains a connection component and a data transfer component. The data transfer component further contains a GetData component, a GetDataHere component, a QueryGetData component, a GetCanonicalFormat component, a SetData component, a EnumFormat component, an Advise component, an UnAdvise component and an EnumAdvise component.